// axios可以封装请求，让所有的请求根据你封装的内容来进行
// 这个文件以后就专门用来处理axios本身的功能
import axios from "axios";
import { ElMessage } from "element-plus";
import store from "../store/index";

const request = axios.create({
  timeout: 5000, // 请求超时设置
  baseURL: import.meta.DEV
    ? "这是生产跑的URL"
    : "http://121.89.205.189:3000/admin", // 请求基础根路径
});

// 请求之前想做什么
request.interceptors.request.use((res) => {
  res.headers.token = store.state.userInfo?.token;
  return res;
});

// 请求之后想做什么
request.interceptors.response.use((res) => {
  // config:本次请求的具体配置
  // data:本次请求的响应数据
  // headers:请求头信息
  // request：返回响应
  // status：本次请求返回的状态
  // 在咱们的项目中，所有请求成功后获得的code都是200
  if (res.data.code === "200") {
    if (res.config.method !== "get") {
      // 请求成功的处理
      ElMessage.success(res.data.message);
    }
    return res.data;
  } else {
    // 请求失败的处理
    ElMessage.error(res.data.message);
    throw Error(res.data.message);
  }
});

// axios.interceptors.response.use(function (response) {
//   // 2xx 范围内的状态码都会触发该函数。
//   // 对响应数据做点什么
//   return response;
// }, function (error) {
//   // 超出 2xx 范围的状态码都会触发该函数。
//   // 对响应错误做点什么
//   return Promise.reject(error);
// });

export default request;
